package com.wang.learn.common.utils;


import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * 类描述：List Util
 *
 * @author Charles
 * @time 2021/10/8 11:34
 */
@Deprecated
public class ListUtil {

    public ListUtil(){

    }

    public static <T> List<T> distinct(List<T> list){
        return SafeStream.of(list).distinct().collect(Collectors.toList());

    }

    /**
     * 对集合进行按照输入数量进行拆分
     * @param list
     * @param size
     * @param <T>
     * @return
     */
//    public static <T> List<List<T>> partition(List<T> list,int size){
//        return ListUtils.partition(list,size);
//    }

    /**
     * 对集合进行分组 single group
     * <B>{@code Collection<E>----->Map<K,List<E>>}</B>
     * @param list 要被分组的List
     * @param fn 分类的规则
     * @param <E> 集合的泛型
     * @param <K> Map中的Key
     * @return 分组后的Map
     */
    public static <E,K> Map<K,List<E>> groupBy(List<E> list, Function<E, K> fn){
        if(Inspections.isEmpty(list)){
            return Collections.emptyMap();
        }
        return list.stream().collect(Collectors.groupingBy(fn));
    }

    public static <T> List<T> get(){
        //TODO 实现
        return null;
    }

}
